/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package com.proyectos.bean;

import com.proyectos.ejb.MatEjbLocal;
import com.proyectos.model.Hitos;
import com.proyectos.model.HitosMatricula;
import com.proyectos.model.Matriculas;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.ejb.EJB;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import org.primefaces.context.RequestContext;

/**
 *
 * @author Jose
 */
public class CtrSeguimiento {

    @EJB
    private MatEjbLocal ejb;
    private String name;
    private List<Matriculas> lista;
    private Matriculas activeReg;
    private boolean lnuevo;
    private boolean ladmin;
    private CtrEntorno oentorno;

    public boolean isLadmin() {
        return ladmin;
    }

    public void setLadmin(boolean ladmin) {
        this.ladmin = ladmin;
    }

    public CtrEntorno getOentorno() {
        return oentorno;
    }

    public void setOentorno(CtrEntorno oentorno) {
        this.oentorno = oentorno;
    }

    public Matriculas getActiveReg() {
        return activeReg;
    }

    public void setActiveReg(Matriculas activeReg) {
        this.activeReg = activeReg;
    }

    public boolean isLnuevo() {
        return lnuevo;
    }

    public void setLnuevo(boolean lnuevo) {
        this.lnuevo = lnuevo;
    }

    public List<Matriculas> getLista() {
        return lista;
    }

    public void setLista(List<Matriculas> lista) {
        this.lista = lista;
    }

    public void addMessage(String summary) {
        FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR, summary, "So capullo");
        FacesContext.getCurrentInstance().addMessage(null, message);
    }

    public void buscar() {

        TreeMap vparametros = new TreeMap();
        vparametros.put("ncarrera", this.oentorno.getCarrera());
        vparametros.put("ncurso", this.oentorno.getCarrera().getCursoActivo());
        if (this.oentorno.getTipo().equals("C")) {
            if (name != null && !name.isEmpty()) {
                vparametros.put("cnombre", "%" + name.toUpperCase() + "%");
            } else {
                vparametros.put("cnombre", "%");
            }
            lista = this.ejb.query("Matriculas.findActive", vparametros);
        } else {
            vparametros.put("ndirector", this.oentorno.getDirector());
            if (name != null && !name.isEmpty()) {
                vparametros.put("cnombre", "%" + name.toUpperCase() + "%");
            } else {
                vparametros.put("cnombre", "%");
            }
            lista = this.ejb.query("Matriculas.findActiveDir", vparametros);
        }

    }

    public void buscar_todo() {

        this.buscar();

    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void viewSegui(BigDecimal id) {
        try {
           

            this.activeReg = this.ejb.get(id);

            Map<String, Object> options = new HashMap<String, Object>();
            options.put("modal", true);
            options.put("draggable", true);
            options.put("resizable", false);
            options.put("contentHeight", 350);
            options.put("contentWidth", 800);
            RequestContext.getCurrentInstance().openDialog("viewSeguimiento", options, null);
        } catch (Exception ex) {
            Logger.getLogger(CtrAlumnos.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    
    SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy HH:mm");

    
    public boolean isHito(Hitos hito)
    {
        HitosMatricula hmat = new HitosMatricula();
        hmat.setNhito(hito);
        hmat.setNmatricula(this.activeReg);
        int l = this.activeReg.getVhitos().indexOf(hmat);
        return (l>=0);
    }
    
    public String getDateHito(Hitos hito)
    {
        Date dfecha = null;
        HitosMatricula hmat = new HitosMatricula();
        hmat.setNhito(hito);
        hmat.setNmatricula(this.activeReg);
        int l = this.activeReg.getVhitos().indexOf(hmat);
        if (l>=0)
        {
            dfecha = this.activeReg.getVhitos().get(l).getDfecha();
        }
        if (dfecha==null)
            return "";
        else{
            String retor= format.format(dfecha);
            return retor;
        }
        
    }
    
    public void cargarMatricula()
    {
        TreeMap vparametros = new TreeMap();
        vparametros.put("ncarrera",this.oentorno.getCarrera());
        vparametros.put("ncurso", this.oentorno.getCarrera().getCursoActivo());
        vparametros.put("nalumno",this.oentorno.getAlumno());
        List<Matriculas> vresul = this.ejb.query("Matriculas.findByUk", vparametros);
        if (vresul.isEmpty())
        {
            this.activeReg=null;
        }else{
            this.activeReg = vresul.get(0);
        }
    }
    
    public void marcarHito(Hitos hito)
    {
        try{
            this.activeReg = this.ejb.marcarHito(activeReg, hito);
        }catch(Exception e)
        {
            this.addMessage(e.getMessage());
        }
        
    }
}
